import useDictStore from "@/store/modules/dict";
import { getDicts } from "@/api/system/dict/data";

/**
 * 获取字典数据  更像是vue3里面hooks
 */
// 根据传入的字典标识 返回一个以标识为key的对象.并进行pinia存储
// 减少http请求
export function useDict(...args) {
    const res = ref({});
    return (() => {
        args.forEach((dictType, index) => {
            res.value[dictType] = [];
            const dicts = useDictStore().getDict(dictType);
            if (dicts) {
                // 如果找到了.直接用  节省http请求
                res.value[dictType] = dicts;
            } else {
                // 真正的请求数据
                getDicts(dictType).then((resp) => {
                    res.value[dictType] = resp.data.map((p) => ({
                        label: p.dictLabel,
                        value: p.dictValue,
                        elTagType: p.listClass,
                        elTagClass: p.cssClass
                    }));
                    // 存到pinia 持久化了.字典表不常改变
                    useDictStore().setDict(dictType, res.value[dictType]);
                });
            }
        });
        // 返回的东西是响应式.
        return toRefs(res.value);
    })();
}
